#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
struct node{
    int l,r;
};
node c[100005];
int ct[1000005],rd[100005],cnt;
void inc(int m,int n){
    if(m>n)return;
    c[++cnt].l=m;
    c[cnt].r=n;
    return;
}
void flagmxzero(int n,int m){
    int tmp,ans=0;
    for(int i=1;i<=m;i++){
        cin>>tmp;
    }
    for(int i=1;i<=cnt;i++){
        if(c[i].l<=tmp)ans++;
    }
    cout<<ans<<" ";
    if(ans==0)cout<<m<<endl;
    else cout<<m-1<<endl;
    return;
}
int main(){
    freopen("detect.in","r",stdin);
    freopen("detect.out","w",stdout);
    int T;
    cin>>T;
    while(T--){
        cnt=0;
        int n,m,L,v,flag=0,lmn=0,rmx=0;
        cin>>n>>m>>L>>v;
        lmn=L;
        for(int i=1;i<=n;i++){
            int di,vi,ai;
            cin>>di>>vi>>ai;
            if(ai==0){
                if(vi>v){
                    inc(di,L);
                }
            } else {
                if(ai<0){
                    flag=1;
                    if(vi<=v)continue;
                    else {
                        if((v*v-vi*vi)%(ai*2)==0)inc(di,(v*v-vi*vi)/ai/2+di-1);
                        else inc(di,ceil((v*v-vi*vi)*1.0/ai*1.0/2)+di);
                    }
                } else {
                    if(vi>v){
                        inc(di,L);
                    } else {
                        if((v*v-vi*vi)%(ai*2)==0)inc((v*v-vi*vi)/ai/2+di+1,L);
                        else inc(ceil((v*v-vi*vi)*1.0/ai*1.0/2)+di,L);
                    }
                }
            }
            rmx=max(rmx,c[cnt].r);
            lmn=min(lmn,c[cnt].l);
        }
        if(flag==0){
            flagmxzero(n,m);
            continue;
        }
        for(int i=1;i<=m;i++){
            int tmp;
            cin>>tmp;
            rd[tmp]=1;
        }
        for(int i=1;i<=rmx;i++){
            ct[i]=ct[i-1]+rd[i];
        }
        int ans1=0;
        for(int i=1;i<=cnt;i++){
            if(ct[c[i].r]>ct[c[i].l])ans1++;
        }
        cout<<ans1<<" ";
        cout<<3<<endl;
    }
    return 0;
}
